Skip to content

Conversation

@vredchenko
Copy link
Collaborator

@vredchenko vredchenko commented Jan 14, 2026

Summary

  1. Split repos.json - extract AI config to claude-code-config.json
  2. Rename prerequisites to dev-requirements.json / dev-requirements.ts
  3. Wire dev-requirements.json to check.py for dynamic tool checking
  4. Remove .gitignore creation from workspace init
  5. Make Claude Code setup opt-in (disabled by default)
  6. Add --no-color and --plain flags for scripting
  7. Rename GitHub workflow to "smartem-workspace CLI tool PyPI package"
  8. Remove unused local_path param from config loader

Files to Modify/Create

core/

File Action Purpose
repos.json Modify Remove claudeConfig, serenaConfig, mcpConfig
claude-code-config.json Create Claude, Serena, MCP config (extracted)
claude-code-config.ts Create Types + re-exports
dev-requirements.json Rename From prerequisites.json
dev-requirements.ts Create Types + re-exports

packages/smartem-workspace/

File Action Purpose
config/schema.py Modify Split ReposConfig, add ClaudeCodeConfig
config/loader.py Modify Load claude-code-config.json, remove local_path
commands/check.py Modify Read dev-requirements.json, add claude scope
commands/claude.py Create smartem-workspace claude setup command
setup/workspace.py Modify Remove .gitignore creation
cli.py Modify Add --with-claude, --no-color, --plain flags

.github/workflows/

File Action Purpose
publish-smartem-workspace.yml Modify Rename workflow

Usage

# Check dev requirements only
smartem-workspace check --scope dev-requirements

# Init without Claude (default)
smartem-workspace init --preset minimal

# Init with Claude
smartem-workspace init --preset minimal --with-claude

# Setup Claude in existing workspace
smartem-workspace claude setup

# Plain mode for scripting
smartem-workspace check --scope all --plain

Verification

  1. TypeScript builds: cd webui && npm run typecheck && npm run lint
  2. Python tests: cd packages/smartem-workspace && uv run pytest -v
  3. Dev requirements check shows all tools from JSON
  4. Init does not create .gitignore or .claude/ by default
  5. --with-claude creates Claude Code integration
  6. --plain outputs no ANSI codes

Out of Scope

- Add --scope prereqs to check command
- Check git, Python 3.11+, uv, network connectivity
- Auto-run prereqs at start of init (--skip-prereqs to bypass)
- Prerequisites shown first in full check output
Defines tool prerequisites for smartem-workspace check command:
- git, Python 3.11+, uv (recommended)
- Node.js 22+, npm
- Container runtime (docker or podman)
- kubectl, k3s, gh CLI

Structure to be refined as part of config sync discussion.
@vredchenko vredchenko changed the title feat(smartem-workspace): add prerequisites check feat(smartem-workspace): config refactor, prerequisites check, gitignore fix Jan 15, 2026
@vredchenko
Copy link
Collaborator Author

  1. we want to rename the github workflow from "Publish smartem-workspace to PyPI" to "smartem-workspace CLI tool PyPI package" - because the workflow includes lint/test/build/publish steps so existing workflow name is misleading. Secondary to this I would like to discuss what exactly are we testing - anything useful?

@vredchenko
Copy link
Collaborator Author

Split repos.json - extract AI-specific config (claudeConfig, serenaConfig, mcpConfig) to ai-config.json

The CLI tool should offer the option to omit AI-related setup for users that do not use Claude Code or want to bring a different vendor AI. By default Claude Code AI setup should be disabled so that users have to explicitly enable it should they want it. Extract from repos.json into claude-code-config.json because they may be other AIs and they might be configured differently. Also follow the pattern of json for content + ts for types and re-export as we do with repos

@vredchenko
Copy link
Collaborator Author

Prerequisites pattern - add prerequisites.ts with types + re-exports (mirrors repos-and-refs.ts pattern)

Naming improvement: prerequisites to what? These are developer requirements for setting up a local machine for development. Please suggest what canonical naming would work best here and let's use that

@vredchenko
Copy link
Collaborator Author

Additionally, naming mismatch between repos.json and repos-and-refs.ts - the original reasoning behind repos and refs was that we want to index not just repos that make up the project but also github pages docs content, project board(s), artefacts such as container images/pypi packages/frontend bundles/binaries, etc. Let's leave this out for now as we will deal with it in scope of another PR: #106 - add this as comment there please

@vredchenko
Copy link
Collaborator Author

Wire prerequisites.json - make check.py read tool definitions from JSON dynamically

My current understanding is that we bundle latest JSON definitions with smartem-workspace tool as we publish to PyPI and that acts as a local fallback, but primary source of truth when smartem-workspace is invoked is a lookup in head of main branch on github - please confirm that is current behaviour and is uniform across all aspects of setup and all setup definitions?

@vredchenko
Copy link
Collaborator Author

I question the merit of duplicating definition schemas: we have core/.ts that defines types and acts as schema enforcer for JSON content already - what does schema.py bring to the game? Can we DRY it? Let's dicsuss

@vredchenko vredchenko changed the title feat(smartem-workspace): config refactor, prerequisites check, gitignore fix feat(smartem-workspace): config refactor, dev requirements, claude opt-in Jan 15, 2026
@vredchenko
Copy link
Collaborator Author

Discussion Summary

Comment 1: Workflow naming + tests

Resolution: Workflow rename only. Current tests (schema validation, preset resolution, path utilities) are useful for catching schema breakages. Test expansion is a separate concern.

Renaming to: smartem-workspace CLI tool PyPI package


Comment 2: AI config extraction

Resolution:

  • Renamed to claude-code-config.json (not ai-config.json) since other AIs might be configured differently
  • Claude Code setup disabled by default - users opt-in with --with-claude
  • Added smartem-workspace claude setup command for existing workspaces
  • Interactive mode will prompt for Claude setup
  • Added --no-color and --plain flags for scripting (per no-color.org standard)

Comment 3: Prerequisites naming

Resolution: Renamed to dev-requirements.json / dev-requirements.ts - developer requirements for local machine setup.


Comment 4: repos-and-refs naming

Resolution: Out of scope - comment added to PR #106 for tracking.


Comment 5: Config loading behavior

Resolution:

  • Confirmed: GitHub main is primary source, bundled is fallback
  • Removed local_path: It was unused dead code (internal param, never exposed in CLI, never called)
  • Keeping bundled fallback for offline use

Comment 6: Schema duplication

Resolution: Deferred - created issue #114 to investigate DRY approaches later.

@vredchenko
Copy link
Collaborator Author

vredchenko commented Jan 15, 2026

Clarification added:

Init without --with-claude skips all Claude-related setup:

  • No .claude/ directory
  • No CLAUDE.md symlink
  • No claude-config symlink
  • No skills symlinks

Init with --with-claude creates all Claude setup:

  • .claude/ directory with settings.local.json and skills symlinks
  • CLAUDE.md symlink
  • claude-config symlink

@vredchenko vredchenko added documentation Improvements or additions to project documentation devops CI/CD, deployment, infrastructure, or tooling work admin Project maintenance, dependency updates, or housekeeping smartem-devtools Developer tooling, documentation, and workspace configuration labels Jan 15, 2026
Val Redchenko added 3 commits January 15, 2026 14:25
… Claude opt-in

- Extract AI config (claudeConfig, serenaConfig, mcpConfig) from repos.json
  to new claude-code-config.json
- Rename prerequisites.json to dev-requirements.json with TypeScript types
- Make Claude Code setup opt-in with --with-claude flag (disabled by default)
- Add standalone `smartem-workspace claude setup` command
- Add --no-color and --plain global CLI flags for scripting
- Remove .gitignore creation from workspace init (workspace not versioned)
- Remove unused local_path parameter from config loader
- Dynamic tool checking from dev-requirements.json with version comparison
- Rename GitHub workflow to "smartem-workspace CLI tool PyPI package"
…cloning

- Auto-detect SSH authentication for GitHub repos (test via ssh -T [email protected])
- If SSH works, clone via SSH URLs (enables push); otherwise use HTTPS
- Replace --ssh flag with --git-ssh (force SSH) and --git-https (force HTTPS)
- Cache SSH check results to avoid repeated connection attempts
- Notify user about clone method being used
- GitLab repos continue to use HTTPS by default (read-only reference)
@vredchenko vredchenko marked this pull request as ready for review January 15, 2026 15:07
@vredchenko vredchenko merged commit 784f6e3 into main Jan 15, 2026
8 checks passed
@vredchenko vredchenko deleted the feat/prereqs-check branch January 15, 2026 15:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

admin Project maintenance, dependency updates, or housekeeping devops CI/CD, deployment, infrastructure, or tooling work documentation Improvements or additions to project documentation smartem-devtools Developer tooling, documentation, and workspace configuration

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants